Address range mirroring system

ABSTRACT

An address range mirroring system includes a plurality of processing subsystem/memory subsystem nodes that each include a respective processing subsystem coupled to a respective memory subsystem, an operating system provided by at least one of the plurality of processing subsystem/memory subsystem nodes, and a Basic Input/Output System (BIOS) that is coupled to the plurality of processing subsystem/memory subsystem nodes. The BIOS identifies an address range mirroring memory size that was provided by the operating system, and an address range mirroring node usage identification that was provided by the operating system. The BIOS then configures address range mirroring according to the address range mirroring memory size in the respective memory subsystem in each of a subset of the plurality of processing subsystem/memory subsystem nodes, with the subset of the plurality of processing subsystem/memory subsystem nodes based on the address range mirroring node usage identification.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present disclosure is a continuation of U.S. patent application Ser.No. 16/940,098, attorney docket no. 120185.01, filed on Jul. 27, 2020,the disclosure of which is incorporated by reference herein in itsentirety.

BACKGROUND

The present disclosure relates generally to information handlingsystems, and more particularly to address range mirroring in aninformation handling system.

As the value and use of information continues to increase, individualsand businesses seek additional ways to process and store information.One option available to users is information handling systems. Aninformation handling system generally processes, compiles, stores,and/or communicates information or data for business, personal, or otherpurposes thereby allowing users to take advantage of the value of theinformation. Because technology and information handling needs andrequirements vary between different users or applications, informationhandling systems may also vary regarding what information is handled,how the information is handled, how much information is processed,stored, or communicated, and how quickly and efficiently the informationmay be processed, stored, or communicated. The variations in informationhandling systems allow for information handling systems to be general orconfigured for a specific user or specific use such as financialtransaction processing, airline reservations, enterprise data storage,or global communications. In addition, information handling systems mayinclude a variety of hardware and software components that may beconfigured to process, store, and communicate information and mayinclude one or more computer systems, data storage systems, andnetworking systems.

Information handling systems such as, for example, server devices, mayutilize address range mirroring in order to protect relatively importantdata. As would be understood by one of skill in the art in possession ofthe present disclosure, address range mirroring may be utilized toprovide for the “mirroring” or copying of data stored in a portion of amemory system (i.e., as compared to “full” memory mirroring that mirrorsentire memory devices.) For example, an operating system in the serverdevice may provide a request for address range mirroring, and a BIOSwill then operate to configure address range mirroring in first andsecond portions of the memory system for use by the operating system instoring important data. Subsequently, the operating system may storedata in that first portion of the memory system, and the processingsystem will operate to automatically provide a copy of that data in thesecond portion of the memory system. However, address range mirroringcan raise issues when utilized with some memory system configurations.

For example, a processing system in a server device may include multipleprocessor subsystems coupled together by processor interconnect(s)(e.g., an Ultra Path Interconnect (UPI) provided in processing systemsavailable from INTEL® Corporation of Santa Clara, Calif., UnitedStates), with the memory system in that server device providing arespective memory subsystem for each processor subsystem (with eachrespective memory subsystem often called the “local memory” for itsassociated processor subsystem), and the processing system/memory systemconfigured in a Non-Uniform Memory Access (NUMA) design in which thememory access time depends on the memory subsystem location relative tothe processor subsystem, with processor subsystems capable of accessingtheir local memory subsystem faster than non-local memory subsystems(i.e., the memory subsystem that is local to the other processorsubsystem(s)). In such NUMA configurations, multiple processingsubsystem/memory subsystem “nodes” may be provided by the processingsubsystem/memory subsystem combinations discussed above, andconventional address range mirroring systems operate to configureaddress range mirroring in the first/second portions of the memorysubsystem in each of the processing subsystem/memory subsystem nodes,thus requiring a second portion of each of those memory subsystems to bereserved for redundant data. However, in some situations, address rangemirroring may not be required in all of the processing subsystem/memorysubsystem nodes, and thus conventional address range mirroring systemsoperate to waste memory space in such situations.

Accordingly, it would be desirable to provide an address range mirroringsystem that addresses the issues discussed above.

SUMMARY

According to one embodiment, an Information Handling System (IHS)includes a Basic Input/Output (BIOS) processing system; and a BIOSmemory system that is coupled to the BIOS processing system and thatincludes instructions that, when executed by the BIOS processing system,cause the BIOS processing system to provide a BIOS engine that isconfigured to: identify an address range mirroring memory size that wasreceived from an operating system provided by at least one of aplurality of processing subsystem/memory subsystem nodes that eachinclude a respective processing subsystem coupled to a respective memorysubsystem; identify an address range mirroring node usage identificationthat was received from the operating system; and configure address rangemirroring according to the address range mirroring memory size in therespective memory subsystem in each of a subset of the plurality ofprocessing subsystem/memory subsystem nodes, wherein the subset of theplurality of processing subsystem/memory subsystem nodes is based on theaddress range mirroring node usage identification.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic view illustrating an embodiment of an InformationHandling System (IHS).

FIG. 2 is a schematic view illustrating an embodiment of a computingdevice that includes the address range mirroring system of the presentdisclosure.

FIG. 3 is a flow chart illustrating an embodiment of a method forperforming address range mirroring.

FIG. 4 is a schematic view illustrating an embodiment of the computingdevice 200 of FIG. 2 operating during the method of FIG. 3.

FIG. 5 is a schematic view illustrating an embodiment of a conventionaladdress range mirroring configuration provided via conventional addressrange mirroring operations.

FIG. 6A is a schematic view illustrating an embodiment of the computingdevice 200 of FIG. 2 operating during the method of FIG. 3.

FIG. 6B is a schematic view illustrating an embodiment of a addressrange mirroring configuration provided via address range mirroringoperations performed according to the teachings of the presentdisclosure.

DETAILED DESCRIPTION

For purposes of this disclosure, an information handling system mayinclude any instrumentality or aggregate of instrumentalities operableto compute, calculate, determine, classify, process, transmit, receive,retrieve, originate, switch, store, display, communicate, manifest,detect, record, reproduce, handle, or utilize any form of information,intelligence, or data for business, scientific, control, or otherpurposes. For example, an information handling system may be a personalcomputer (e.g., desktop or laptop), tablet computer, mobile device(e.g., personal digital assistant (PDA) or smart phone), server (e.g.,blade server or rack server), a network storage device, or any othersuitable device and may vary in size, shape, performance, functionality,and price. The information handling system may include random accessmemory (RAM), one or more processing resources such as a centralprocessing unit (CPU) or hardware or software control logic, ROM, and/orother types of nonvolatile memory. Additional components of theinformation handling system may include one or more disk drives, one ormore network ports for communicating with external devices as well asvarious input and output (I/O) devices, such as a keyboard, a mouse,touchscreen and/or a video display. The information handling system mayalso include one or more buses operable to transmit communicationsbetween the various hardware components.

In one embodiment, IHS 100, FIG. 1, includes a processor 102, which isconnected to a bus 104. Bus 104 serves as a connection between processor102 and other components of IHS 100. An input device 106 is coupled toprocessor 102 to provide input to processor 102. Examples of inputdevices may include keyboards, touchscreens, pointing devices such asmouses, trackballs, and trackpads, and/or a variety of other inputdevices known in the art. Programs and data are stored on a mass storagedevice 108, which is coupled to processor 102. Examples of mass storagedevices may include hard discs, optical disks, magneto-optical discs,solid-state storage devices, and/or a variety of other mass storagedevices known in the art. IHS 100 further includes a display 110, whichis coupled to processor 102 by a video controller 112. A system memory114 is coupled to processor 102 to provide the processor with faststorage to facilitate execution of computer programs by processor 102.Examples of system memory may include random access memory (RAM) devicessuch as dynamic RAM (DRAM), synchronous DRAM (SDRAM), solid state memorydevices, and/or a variety of other memory devices known in the art. Inan embodiment, a chassis 116 houses some or all of the components of IHS100. It should be understood that other buses and intermediate circuitscan be deployed between the components described above and processor 102to facilitate interconnection between the components and the processor102.

Referring now to FIG. 2, an embodiment of a computing device 200 isillustrated that includes the address range mirroring system of thepresent disclosure. In an embodiment, the computing device 200 may beprovided by the IHS 100 discussed above with reference to FIG. 1 and/ormay include some or all of the components of the IHS 100. While one ofskill in the art in possession of the present disclosure will recognizethat the computing device is illustrated and discussed below as beingprovided by a server device, one of skill in the art in possession ofthe present disclosure will recognize that the functionality of thecomputing device 200 discussed below may be provided by networkingdevices, desktop computing devices, laptop/notebook computing devices,tablet devices, mobile phones, and/or other devices that are configuredto operate similarly as the computing device 200 discussed below. In theillustrated embodiment, the computing device 200 includes a chassis 202that houses the components of the computing device 200, only some ofwhich are illustrated below.

In the illustrated example, the chassis 202 houses a processing systemthat is provided by a dual-processor system including the processingsubsystem 204 a and the processing subsystem 206 a that are coupledtogether by a processing subsystem interconnect 208 (e.g., the UPIdiscussed above), and each of which may include one of more processorslike the processor 102 discussed above with reference to FIG. 1.However, while a dual-processor system is illustrated and describedherein, one of skill in the art in possession of the present disclosurein the art will recognize how the teachings of the present disclosuremay be extended to other multi-processor systems that include additionalprocessing subsystems while remaining within the scope of the presentdisclosure as well.

The chassis 202 may also houses a memory system that provides a localmemory subsystem for each of the processing subsystems in the processingsystem. As such, in the illustrated embodiment, a memory subsystem 204 bis provided as the local memory subsystem for the processing subsystem204 a, and a memory subsystem 206 b is provided as the local memorysubsystem for the processing subsystem 206 a. In a specific example, thememory subsystems 204 b and 206 b may be host memory subsystems providedby any of a variety of memory devices known in the art. In a specificexample, the processor subsystem 204 a/memory subsystem 204 b and theprocessing subsystem 206 a/memory subsystem 206 b operate as processingsubsystem/memory subsystem nodes that may be provided by Non-UniformMemory Access (NUMA) nodes, with the processor subsystem 204 a/memorysubsystem 204 b providing a first NUMA node (e.g., “NUMA node 0”) andthe processor subsystem 206 a/memory subsystem 206 b providing a secondNUMA node (e.g., “NUMA node 1”) that is coupled to the first NUMA nodevia the processing subsystem interconnect/UPI 208. However, whileparticular processing subsystem/memory subsystem nodes are described ina two processing subsystem/memory subsystem node configuration, one ofskill in the art in possession of the present disclosure will recognizethat other processing subsystem/memory subsystem node systems will fallwithin the scope of the present disclosure as well.

As such, one of skill in the art in possession of the present disclosurewill recognize that the processing subsystems 204 a and 206 a and theirrespective local memory subsystems 204 b and 206 b illustrated in FIG. 2provide an example of a NUMA configuration in which local memorysubsystems are provided for each processing subsystem in amulti-processor system, and memory subsystem access times depend on therelative location of the memory subsystem and the processing subsystemperforming the memory access operations, with processing subsystems ableto access their local memory subsystems faster than memory subsystemsthat are not local (i.e., memory subsystems that are local to anotherprocessing subsystem.) However, while a NUMA memory design isillustrated and discussed below, other processing system/memory systemconfigurations may benefit from the teachings of the present disclosureand thus are envisioned as falling within its scope as well.

The chassis 202 also houses a Basic Input/Output System (BIOS) 210 thatone of skill in the art in possession of the present disclosure willrecognize may be provided by firmware, and used to perform hardwareinitialization during booting operations (e.g., Power-On StartUp (POST))for the computing device 200, as well as provide runtime services for anoperating systems and/or other applications/programs provided by thecomputing device 200. As such, the BIOS 210 may be provided by a BIOSprocessing system (not illustrated, but which may include the processor102 discussed above with reference to FIG. 1) and a BIOS memory system(not illustrated, but which may be provided by the memory 114 discussedabove with reference to FIG. 1) that includes instruction that, whenexecuted by the BIOS processing system, cause the BIOS processing systemto provide a BIOS engine that is configured to performs the operationsof the BIOS 210 discussed below. Furthermore, while discussed as a BIOS,one of skill in the art in possession of the present disclosure willrecognize that the BIOS 210 may be provided according to the UnifiedExtensible Firmware Interface (UEFI) specification, which defines asoftware interface between operating systems and platform firmware andwhich was provided to replace legacy BIOS firmware, while remainingwithin the scope of the present disclosure as well.

In a specific example, the BIOS 210 may include an address rangemirroring variable structure 212 (e.g., an address range mirroring UEFIvariable structure) that includes an Address Range Mirroring (ARM)memory size request field 212 a along with one or more Address RangeMirroring (ARM) node usage identification fields 212 b. In a specificexample, each of the Address Range Mirroring (ARM) memory size requestfield 212 a and the one or more Address Range Mirroring (ARM) node usageidentification fields 212 b may be configured to store UEFI variables,although other fields and/or structures for performing the functionalityof the present disclosure will fall within the scope of the presentdisclosure as well. In some of the examples discussed below, the AddressRange Mirroring (ARM) node usage identification fields 212 b may beconfigured to provide for the setting of flags that operate to indicatea number of processing subsystem/memory subsystem nodes upon whichaddress range mirroring is being requested to the BIOS 210. However,while a specific address range mirroring variable structure and AddressRange Mirroring (ARM) node usage identification fields are describedbelow, one of skill in the art in possession of the present disclosurewill appreciate that a number of processing subsystem/memory subsystemnodes upon which address range mirroring should be performed may beidentified in a variety of manners that will fall within the scope ofthe present disclosure as well.

In the illustrated embodiment, an operating system 214 is illustrated ascoupled to the address range mirroring variable structure 212 in theBIOS 210, and one of skill in the art in possession of the presentdisclosure will recognize that the operating system 214 may be providedby at least one of the processing subsystem/memory subsystem nodes inthe computing device 200 (e.g. the processing subsystem 204 a and thememory subsystem 204 b, the processing subsystem 206 a and the memorysubsystem 206 b, etc.) However, while a specific computing device 200has been illustrated and described, one of skill in the art inpossession of the present disclosure will recognize that computingdevices utilizing the address range mirroring system of the presentdisclosure may include a variety of components and/or componentconfigurations for performing conventional computing devicefunctionality, as well as the functionality discussed below, whileremaining within the scope of the present disclosure as well.

Referring now to FIG. 3, an embodiment of a method 300 for performingaddress range mirroring is illustrated. As discussed below, the systemsand methods of the present disclosure provide for the modification ofmulti-processing subsystem/memory subsystem node address range mirroringoperations by a BIOS that would conventionally operate to configureaddress range mirroring on the memory subsystem in each of theprocessing subsystem/memory subsystem nodes in the multi-processingsubsystem/memory subsystem node system. For example, the address rangemirroring system of the present disclosure may include a plurality ofprocessing subsystem/memory subsystem nodes, each of which include arespective processing subsystem coupled to a respective memorysubsystem. An operating system is provided by at least one of theplurality of processing subsystem/memory subsystem nodes, and a BIOSthat is coupled to the plurality of processing subsystem/memorysubsystem nodes may identify an address range mirroring memory size andan address range mirroring node usage identification that was providedby the operating system. In response, the BIOS will configure addressrange mirroring according to the address range mirroring memory size inthe respective memory subsystem in each of a subset of the plurality ofprocessing subsystem/memory subsystem nodes, with the subset of theplurality of processing subsystem/memory subsystem nodes based on theaddress range mirroring node usage identification. As such, the numberprocessing subsystem/memory subsystem nodes in a multi-processingsubsystem/memory subsystem node system upon which address rangemirroring is configured may be modified such that address rangemirroring is performed on less than all of the processingsubsystem/memory subsystem nodes in the multi-processingsubsystem/memory subsystem node system, allowing for the conservation ofmemory resources in situations where address range mirroring is notrequired on all of the processing subsystem/memory subsystem nodes.

The method 300 begins at block 302 where an operating system requestsaddress range mirroring. With reference to FIG. 4, in an embodiment ofblock 302, the operating system 214 may operate to perform address rangemirroring request operations 400 in order to request address rangemirroring. In an embodiment, during runtime operations for the computingdevice 200, the operating system 214 may perform the address rangemirroring request operations 400 that include providing an address rangemirroring memory size in the Address Range Mirroring (ARM) memory sizefield 212 a included in the address range mirroring variable structure212, and providing an address range mirroring node usage identifier inone or more of the Address Range Mirroring (ARM) node usageidentification field(s) 212 b included in the address range mirroringvariable structure 212. In a specific example, the operating system 214may require a particular memory size (e.g., 200 GB in the examplesprovided below) for address range mirroring of operating system kernelmemory data, user-defined high priority data, and/or any other data thatwould be apparent to one of skill in the art in possession of thepresent disclosure, and at block 302 the operating system 214 mayprovide that memory size in the Address Range Mirroring (ARM) memorysize field 212 a as part of the address range mirroring requestoperations 400.

With reference to FIG. 5, an embodiment of a conventionalmulti-processing subsystem/memory subsystem node address range mirroringconfiguration in a two processing subsystem/memory subsystem node system(e.g., a two NUMA node system) is illustrated to contrast themulti-processing subsystem/memory subsystem node address range mirroringconfiguration operations of the present disclosure. In this example, anoperating system may have requested a memory size of 200 GB for addressrange mirroring (e.g., by providing a UEFI variable in an address rangemirroring UEFI variable structure) and, in response, a BIOS has operatedto configure a memory subsystem 500 that is part of a first processingsubsystem/memory subsystem node and that includes 500 GB of memory space(illustrated as 0-500 in FIG. 5), and a memory subsystem 502 that ispart of a second processing subsystem/memory subsystem node thatincludes 500 GB of memory space (illustrated as 500-1000 in FIG. 5).

As can be seen, the conventional address range mirroring configurationoperations include configuring a 100 GB mirror portion 500 a of thememory subsystem 500 between 4 GB and 104 GB in the memory subsystem500, a 100 GB hidden portion 500 b of the memory subsystem 500 between400 GB and 500 GB in the memory subsystem 502, a 100 GB mirror portion502 a of the memory subsystem 502 between 500 GB and 600 GB in thememory subsystem 502, and a 100 GB hidden portion 502 b of the memorysubsystem 502 between 900 GB and 1000 GB in the memory subsystem 502. Aswill be appreciated by one of skill in the art in possession of thepresent disclosure, the operating system will view the combined memorysystem provided by the memory subsystems 500 a and 502 as including the100 GB mirror portion 500 a as being provided between 4 GB and 104 GB inthe combined memory system, will not be able to see the 100 GB hiddenportion 500 b, will view the 100 GB mirror portion 502 a as beingprovided between 400 GB and 500 GB in the combined memory system (i.e.,because the 400 GB-500 GB portion of the memory subsystem 500 is hiddenfrom the operating system), will not be able to see the 100 GB hiddenportion 502 b. In other words, the 100 GB hidden portions 500 b and 502b will cause the operating system to view the combined memory system(provided by the memory subsystems 500 a and 502 that have a combined1000 GB of memory space) as having 800 GB of memory space.

As will be appreciated by one of skill in the art in possession of thepresent disclosure, the BIOS may then inform the operating system of themirror portions 500 a and 500 b and, subsequently, any data provided onthe mirror portion 500 a by the operating system will be automaticallycopied to the hidden portion 500 b (e.g., by the processing system),while any data provided on the mirror portion 502 a by the operatingsystem will be automatically copied to the hidden portion 502 b (e.g.,by the processing system). Thus, the 200 GB address range mirroringrequest will result in 200 GB of address range mirroring provided viathe 100 GB mirror portion 500 a and the 100 GB hidden portion 500 b onthe memory subsystem 500, and 200 GB of address range mirroring providedvia the 100 GB mirror portion 502 a and the 100 GB hidden portion 502 bon the memory subsystem 502. Furthermore, one of skill in the art inpossession of the present disclosure will recognize that in processingsubsystem/memory subsystem node systems with additional processingsubsystem/memory subsystem nodes, 200 GB of address range mirroring willbe provided (via a respective 100 GB mirror portion and a 100 GB hiddenportion) on the memory subsystem in each of the additional processingsubsystem/memory subsystem nodes as well. As discussed above, there maybe situations where it is desirable to conserve memory space and notprovide address range mirroring on one or more of the processingsubsystem/memory subsystem nodes in a multi-processing subsystem/memorysubsystem node system.

As discussed in further detail below, the address range mirroring systemof the present disclosure addresses such issues via the Address RangeMirroring (ARM) node usage identification field(s) 212 b in the addressrange mirroring variable structure 212. For example, the Address RangeMirroring (ARM) node usage identification field(s) 212 b may be providedvia an update to UEFI variables for address range mirroring byperforming, for example, a modification to Memory Reference Code (MRC)to add the Address Range Mirroring (ARM) node usage identificationfield(s) 212 b to the Address Range Mirroring (ARM) UEFI viablestructure. In an embodiment, at block 302, the operating system 214 mayuse the Address Range Mirroring (ARM) node usage identification field(s)212 b to identify a number of processing subsystem/memory subsystemnodes upon which address range mirroring should be configured. Using theexample of the two processing subsystem/memory subsystem node systemillustrated in FIG. 2, at block 302 the operating system 214 may set aflag or provide a UEFI variable in the Address Range Mirroring (ARM)node usage identification field(s) 212 b to identify that only one ofthe processing subsystem 204 a/memory subsystem 204 b node and theprocessing subsystem 206 a/memory subsystem 206 b node should beconfigured for address range mirroring. However, while a specificexample of a two processing subsystem/memory subsystem node system isprovided, one of skill in the art in possession of the presentdisclosure will appreciate how the Address Range Mirroring (ARM) nodeusage identification field(s) 212 b in the address range mirroringvariable structure 212 may allow processing subsystem/memory subsystemnode systems with more processing subsystem/memory subsystem nodes tohave different subsets of those processing subsystem/memory subsystemnodes configured for address range mirroring.

For example, in a three processing subsystem/memory subsystem nodesystem, the operating system 214 may utilize the Address Range Mirroring(ARM) node usage identification field(s) 212 b in the address rangemirroring variable structure 212 to identify (e.g., via flags,identification data, and/or in any other manner that would be apparentto one of skill in the art in possession of the present disclosure) afirst of the three processing subsystem/memory subsystem nodes foraddress range mirroring configuration, a first and second of the threeprocessing subsystem/memory subsystem nodes for address range mirroringconfiguration, a first and third of the three processingsubsystem/memory subsystem nodes for address range mirroringconfiguration, a second of the three processing subsystem/memorysubsystem nodes for address range mirroring configuration, a second andthird of the three processing subsystem/memory subsystem nodes foraddress range mirroring configuration, or a third of the threeprocessing subsystem/memory subsystem nodes for address range mirroringconfiguration. Similarly, one of skill in the art in possession of thepresent disclosure will appreciate how the operating system 214 mayutilize the Address Range Mirroring (ARM) node usage identificationfield(s) 212 b in the address range mirroring variable structure 212 toidentify any subset of processing subsystem/memory subsystem nodes in afour processing subsystem/memory subsystem node system for address rangemirroring configuration as well, and how the teachings of the presentdisclosure may extend to processing subsystem/memory subsystem nodesystems with any number of processing subsystem/memory subsystem nodes.

The method 300 then proceeds to block 304 where a BIOS identifies anaddress range mirroring memory size and an address range mirroring nodeusage identification in the address range mirroring request. In anembodiment, at block 304 and following the request for address rangemirroring by the operating system 214 at block 302, the BIOS engine inthe BIOS 210 may operate to identify the address range mirroring memorysize and address range mirroring node usage identification provided bythe operating system 214 in that address range mirroring request. Forexample, following the request for address range mirroring by theoperating system 214 at block 302, at block 304 the computing device 200may be reset, rebooted, and/or otherwise initialized such that bootoperations and/or other initialization operations are performed by theBIOS 210. As part of those initialization operations, the BIOS engine inthe BIOS 210 may access the address range mirroring variable structure212 and identify the address range mirroring memory size provided by theoperating system 214 in the Address Range Mirroring (ARM) memory sizerequest field 212 a (e.g., 200 GB in the example above), and the addressrange mirroring node usage identifier(s) provided by the operatingsystem 214 in the Address Range Mirroring (ARM) node usageidentification field(s) 212 b (e.g., the flag set for the two processingsubsystem/memory subsystem node system in the example above). However,while the identification of particular data for the address rangemirroring memory size and the address range mirroring node usageidentifier at a particular time has been discussed, one of skill in theart in possession of the present disclosure will recognize that otherdata may be used to identify the address range mirroring memory sizeand/or the address range mirroring node usage identifier at other times(e.g., during runtime operations for the computing device 200) whileremaining within the scope of the present disclosure.

The method 300 then proceeds to block 306 where the BIOS configuresaddress range mirroring in a subset of processing subsystem/memorysubsystem nodes based on the address range mirroring memory size andaddress range mirroring node usage identification. With reference toFIG. 6A, an embodiment of block 306 is illustrated in which the addressrange mirroring node usage identifier(s) provided by the operatingsystem 214 in the Address Range Mirroring (ARM) node usageidentification field(s) 212 b (e.g., a flag set for the two processingsubsystem/memory subsystem node system) identifies that only one of theprocessing subsystem 204 a/memory subsystem 204 b node and theprocessing subsystem 206 a/memory subsystem 206 b node should beconfigured for address range mirroring and, in response, the BIOS enginein the BIOS 210 may operate to perform address range configurationoperations 600 on the memory subsystem 204 b in the “first” processingsubsystem 204 a/memory subsystem 204 b node.

With reference to FIG. 6B, an embodiment of a multi-processingsubsystem/memory subsystem node address range mirroring configurationthat may be provided at block 306 in a two processing subsystem/memorysubsystem node system (e.g., a two NUMA nodes system) is illustrated. Inthis example, the operating system 214 has requested a memory size of200 GB for address range mirroring in the Address Range Mirroring (ARM)memory size request field 212 a included in the address range mirroringvariable structure 212, and has set a flag in the in Address RangeMirroring (ARM) node usage identification field(s) 212 b in the addressrange mirroring variable structure 212 that identifies that only one ofthe processing subsystem 204 a/memory subsystem 204 b node and theprocessing subsystem 206 a/memory subsystem 206 b node should beconfigured for address range mirroring In response, the BIOS engine inthe BIOS 210 has operated to configure the memory subsystem 204 a thatis part of the “first” processing subsystem 204 a/memory subsystem 204 bnode and that includes 500 GB of memory space (illustrated as 0-500 inFIG. 5), while not configuring the memory subsystem 206 b that is partof the “second” processing subsystem 206 a/memory subsystem 206 b nodethat includes 500 GB of memory space (illustrated as 500-1000 in FIG.5).

As can be seen, the address range mirroring configuration operations 600performed at block 306 include configuring a 200 GB mirror portion 600 aof the memory subsystem 204 b between 4 GB and 204 GB in the memorysubsystem 204 b, and configuring a 200 GB hidden portion 600 b of thememory subsystem 204 b between 300 GB and 500 GB in the memory subsystem204 b. As will be appreciated by one of skill in the art in possessionof the present disclosure, the operating system 214 will view thecombined memory system provided by the memory subsystems 206 b and 206 bas including the 200 GB mirror portion 600 a that is provided between 4GB and 204 GB in the combined memory system, and will not be able to seethe 200 GB hidden portion 600 b. In other words, the 200 GB hiddenportion 600 b will cause the operating system 214 to view the combinedmemory system (provided by the memory subsystems 204 b and 206 b thathave a combined 1000 GB of memory space) as having 800 GB of memoryspace.

As discussed above, while a specific example of a two processingsubsystem/memory subsystem node system is provided, one of skill in theart in possession of the present disclosure will appreciate how theAddress Range Mirroring (ARM) node usage identification field(s) 212 bin the address range mirroring variable structure 212 may allowprocessing subsystem/memory subsystem node systems with more processingsubsystem/memory subsystem nodes to have different subsets of thoseprocessing subsystem/memory subsystem nodes configured for address rangemirroring. As such, in a three processing subsystem/memory subsystemnode system, at block 306 the BIOS engine in the BIOS 210 may configurea first of the three processing subsystem/memory subsystem nodes foraddress range mirroring, a first and second of the three processingsubsystem/memory subsystem nodes for address range mirroring, a firstand third of the three processing subsystem/memory subsystem nodes foraddress range mirroring, a second of the three processingsubsystem/memory subsystem nodes for address range mirroring, a secondand third of the three processing subsystem/memory subsystem nodes foraddress range mirroring, or a third of the three processingsubsystem/memory subsystem nodes for address range mirroring. Similarly,one of skill in the art in possession of the present disclosure willappreciate how the BIOS engine in the BIOS 210 may configure any subsetof processing subsystem/memory subsystem nodes in a four processingsubsystem/memory subsystem node system for address range mirroring aswell, and how the teachings of the present disclosure may extend toprocessing subsystem/memory subsystem node systems with any number ofprocessing subsystem/memory subsystem nodes.

The method 300 then proceeds to block 308 where at least one of theprocessing subsystem/memory subsystem nodes performs address rangemirroring in the subset of processing subsystem/memory subsystem nodes.In an embodiment, at block 308 and following the address range mirroringconfiguration operations by the BIOS 210, the initialization operationsfor the computing device 200 may be completed and the computing device200 may enter a runtime state in which runtime operations are performed.As will be appreciated by one of skill in the art in possession of thepresent disclosure, following the address range mirroring configurationoperations at block 306, the BIOS engine in the BIOS 210 may inform theoperating system 214 of the mirror portion 600 a in the memory subsystem204 a by, for example, updating a UEFI variable status field in order toreport to the operating system 214 how the address range mirroring wasconfigured at block 306.

Subsequently, any data provided (e.g., stored) on the mirror portion 600a of the memory subsystem 204 b by the operating system 214 will beautomatically copied to the hidden portion 600 b in the memory subsystem204 b (e.g., by the processing subsystem 204 a), thus “mirroring” thatdata that is stored on the mirror portion 600 a in the hidden portion600 b. As such, the 200 GB address range mirroring request will resultin 200 GB of address range mirroring provided via the 100 GB mirrorportion 600 a and the 100 GB hidden portion 600 b on the memorysubsystem 204 b, while the memory subsystem 206 b is not configured foraddress range mirroring such that all the memory space on the memorysubsystem 206 b is available for data storage. Furthermore, one of skillin the art in possession of the present disclosure will recognize thatin processing subsystem/memory subsystem node systems with additionalprocessing subsystem/memory subsystem nodes, 200 GB of address rangemirroring may be provided (via a respective 100 GB mirror portion and a100 GB hidden portion) on any memory subsystems in a subset of theprocessing subsystem/memory subsystem nodes that is less than the totalnumber of processing subsystem/memory subsystem nodes. Finally, one ofskill in the art in possession of the present disclosure will recognizehow, in the event a mirror portion of a memory subsystem (e.g., mirrorportion 600 a on memory subsystem 204 b) experiences an uncorrectableerror or otherwise becomes unavailable, the copy of the data stored onthe corresponding hidden portion of the memory subsystem (e.g., hiddenportion 600 b on the memory subsystem 204 b) may be retrieved (e.g., bythe processing subsystem 204 a) for use by the operating system 214.

As will be appreciated by one of skill in the art in possession of thepresent disclosure, in the event no address range mirroring node usageidentifier is provided in the Address Range Mirroring (ARM) node usageidentification field(s) 212 b in the address range mirroring variablestructure 212, the conventional address range mirroring operationsdiscussed above with reference to FIG. 5 may be performed by the BIOS210. Furthermore, in the event the address range memory size provided bythe operating system 214 in the Address Range Mirroring (ARM) memorysize request field 212 a in the address range mirroring variablestructure 212 exceeds the size of a first memory subsystem that isidentified for address range mirroring configuration (e.g., the memorysubsystem 204 a in the example above), the BIOS engine in the BIOS 210may operate to configure that entire first memory subsystem for addressrange mirroring, and then configure a second memory subsystem (andadditional memory subsystems if necessary) for address range mirroringin order to provide the requested address range mirroring memory size.

Thus, systems and methods have been described that provide for themodification of NUMA system address range mirroring operations by a BIOSthat would conventionally operate to configure address range mirroringon the NUMA memory in each of the NUMA nodes in the NUMA system. Forexample, the address range mirroring system of the present disclosuremay include a plurality of NUMA nodes, each of which include arespective NUMA processor coupled to a respective NUMA memory. Anoperating system is provided by at least one of the plurality of NUMAnodes, and a BIOS that is coupled to the plurality of NUMA nodes mayidentify an address range mirroring memory size and an address rangemirroring node usage identification that was provided by the operatingsystem. In response, the BIOS will configure address range mirroringaccording to the address range mirroring memory size in the respectiveNUMA memory in each of a subset of the plurality of NUMA nodes, with thesubset of the plurality of NUMA nodes based on the address rangemirroring node usage identification. As such, the number NUMA nodes in aNUMA system upon which address range mirroring is configured may bemodified such that address range mirroring is performed on less than allof the NUMA nodes in the NUMA system, allowing for the conservation ofmemory resources in situations where address range mirroring is notrequired on all of the NUMA nodes.

Although illustrative embodiments have been shown and described, a widerange of modification, change and substitution is contemplated in theforegoing disclosure and in some instances, some features of theembodiments may be employed without a corresponding use of otherfeatures. Accordingly, it is appropriate that the appended claims beconstrued broadly and in a manner consistent with the scope of theembodiments disclosed herein.

What is claimed is:
 1. An address range mirroring system, comprising: aplurality of discrete memory subsystems; and an address range mirroringconfiguration subsystem that is coupled to the plurality of discretememory subsystems and configured to: identify an address range mirroringmemory size; identify a subset of the plurality of discrete memorysubsystems for address range mirroring configuration; and configure, ineach of the subset of the plurality of discrete memory subsystemsidentified for address range mirroring configuration, address rangemirroring according to the address range mirroring memory size.
 2. Thesystem of claim 1, wherein identifying the address range mirroringmemory size and the subset of the plurality of discrete memorysubsystems for address range mirroring configuration includes:receiving, during a runtime operations for a computing device thatincludes the plurality of discrete memory subsystems, the address rangemirroring memory size and the subset of the plurality of discrete memorysubsystems for address range mirroring configuration; and identifying,as part of initialization operations for the computing device that areperformed subsequent to the runtime operations, the address rangemirroring memory size and the subset of the plurality of discrete memorysubsystems for address range mirroring configuration that were receivedduring the runtime operations for the computing device.
 3. The system ofclaim 2, the address range mirroring memory size and the subset of theplurality of discrete memory subsystems for address range mirroringconfiguration are received in an address range mirroring variablestructure during the runtime operations for the computing device.
 4. Thesystem of claim 3, wherein the address range mirroring variablestructure includes Memory Reference Code (MRC) that is configured tostore an identification of the subset of the plurality of discretememory subsystems for address range mirroring configuration.
 5. Thesystem of claim 1, wherein the configuring the address range mirroringaccording to the address range mirroring memory size in each of thesubset of the plurality of discrete memory subsystems identified foraddress range mirroring configuration includes: configuring a firstportion of the subset of the plurality of discrete memory subsystems asmirrored memory; and configuring a second portion of the subset of theplurality of discrete memory subsystems as hidden memory.
 6. The systemof claim 5, wherein data provided in the first portion of the subset ofthe plurality of discrete memory subsystems that was configured asmirrored memory is automatically copied to the second portion of thesubset of the plurality of discrete memory subsystems that wasconfigured as hidden memory.
 7. The system of claim 1, furthercomprising: a plurality of processing subsystems, wherein each of theplurality of processing subsystems is configured to utilize a respectiveone of the plurality of discrete memory subsystems as a local memorysubsystem.
 8. An Information Handling System (IHS), comprising: a firstprocessing system; and a first memory system that is coupled to thefirst processing system and that includes instructions that, whenexecuted by the first processing system, cause the first processingsystem to provide an address range mirroring configuration engine thatis configured to: identify an address range mirroring memory size;identify a subset of a plurality of discrete second memory subsystemsfor address range mirroring configuration; and configure, in each of thesubset of the plurality of discrete second memory subsystems identifiedfor address range mirroring configuration, address range mirroringaccording to the address range mirroring memory size.
 9. The IHS ofclaim 8, wherein identifying the address range mirroring memory size andthe subset of the plurality of discrete second memory subsystems foraddress range mirroring configuration includes: receiving, during aruntime operations for the IHS, the address range mirroring memory sizeand the subset of the plurality of discrete second memory subsystems foraddress range mirroring configuration; and identifying, as part ofinitialization operations for the IHS that are performed subsequent tothe runtime operations, the address range mirroring memory size and thesubset of the plurality of discrete second memory subsystems for addressrange mirroring configuration that were received during the runtimeoperations for the IHS.
 10. The IHS of claim 9, wherein the addressrange mirroring memory size and the subset of the plurality of discretesecond memory subsystems for address range mirroring configuration arereceived in an address range mirroring variable structure during theruntime operations for the IHS.
 11. The IHS of claim 10, wherein theaddress range mirroring variable structure includes Memory ReferenceCode (MRC) that is configured to store an identification of the subsetof the plurality of discrete second memory subsystems for address rangemirroring configuration.
 12. The IHS of claim 8, wherein the configuringthe address range mirroring according to the address range mirroringmemory size in each of the subset of the plurality of discrete secondmemory subsystems identified for address range mirroring configurationincludes: configuring a first portion of the subset of the plurality ofdiscrete second memory subsystems as mirrored memory; and configuring asecond portion of the subset of the plurality of discrete second memorysubsystems as hidden memory.
 13. The IHS of claim 12, wherein dataprovided in the first portion of the subset of the plurality of discretesecond memory subsystems that was configured as mirrored memory isautomatically copied to the second portion of the subset of theplurality of discrete second memory subsystems that was configured ashidden memory.
 14. A method for performing address range mirroring,comprising: identifying, by an address range mirroring configurationsubsystem, an address range mirroring memory size; identifying, by theaddress range mirroring configuration subsystem, a subset of a pluralityof discrete memory subsystems for address range mirroring configuration;and configuring, by the address range mirroring configuration subsystemin each of the subset of the plurality of discrete memory subsystemsidentified for address range mirroring configuration, address rangemirroring according to the address range mirroring memory size.
 15. Themethod of claim 14, wherein identifying the address range mirroringmemory size and the subset of the plurality of discrete memorysubsystems for address range mirroring configuration includes:receiving, by the address range mirroring configuration subsystem duringa runtime operations for a computing device that includes the pluralityof discrete memory subsystems, the address range mirroring memory sizeand the subset of the plurality of discrete memory subsystems foraddress range mirroring configuration; and identifying, by the addressrange mirroring configuration subsystem as part of initializationoperations for the computing device that are performed subsequent to theruntime operations, the address range mirroring memory size and thesubset of the plurality of discrete memory subsystems for address rangemirroring configuration that were received during the runtime operationsfor the computing device.
 16. The method of claim 15, wherein theaddress range mirroring memory size and the subset of the plurality ofdiscrete memory subsystems for address range mirroring configuration arereceived in an address range mirroring variable structure during theruntime operations for the computing device.
 17. The method of claim 16,wherein the address range mirroring variable structure includes MemoryReference Code (MRC) that is configured to store an identification ofthe subset of the plurality of discrete memory subsystems for addressrange mirroring configuration.
 18. The method of claim 14, wherein theconfiguring the address range mirroring according to the address rangemirroring memory size in each of the subset of the plurality of discretememory subsystems identified for address range mirroring configurationincludes: configuring, by the address range mirroring configurationsubsystem, a first portion of the subset of the plurality of discretememory subsystems as mirrored memory; and configuring, by the addressrange mirroring configuration subsystem, a second portion of the subsetof the plurality of discrete memory subsystems as hidden memory.
 19. Themethod of claim 18, wherein data provided in the first portion of thesubset of the plurality of discrete memory subsystems that wasconfigured as mirrored memory is automatically copied to the secondportion of the subset of the plurality of discrete memory subsystemsthat was configured as hidden memory.
 20. The method of claim 14,further comprising: utilizing, by each of a plurality of processingsubsystems, a respective one of the plurality of discrete memorysubsystems as a local memory subsystem.